package com.tedu.API.list;

import java.util.Collection;

/**
 *  //测试：  ①创建父类：Fruit----属性：name  名字 |方法:获取名称  | 构造器
 *           ②  创建两个子类：Apple、Orange--构造器：传水果名
 *           ③  创建类：TestJob 泛型 ？extends 父类   限定传入子类一定是继承父类操作
 *               约束----静态的方法   printFruit()
 *               约束要求：只能是继承父类的子类才可以使用
 *           ④  单元测试：testE()测试--约束是否限制成功
 *        实际开发应用中，该程序员制定！
 */
public class Fruit {
    private String name;   //私有属性  name  水果名称

    public String getName() {   //获取名字
        return name;
    }

    public Fruit(String name) {  //有参构造器
        this.name = name;
    }
}
//创建两个子类：Apple Orange继承Fruit
class Apple extends Fruit{
    public Apple() { // Apple a=new apple();    打印水果名称
        super("苹果");
    }
}
class Orange extends Fruit{
    public Orange( ){
        super("橘子");
    }
}
//创建TestJob类---静态方法 printFruit:添加约束：传入类型一定是父类的子类
class TestJob{                            // ?[任意类型] extends Fruit
                                          //传入类型必须继承与Fruit父类
    public static void printFruit(Collection<? extends Fruit> fruits){
        //增强for循环：父类Fruit 名称
        for(Fruit fruit:fruits){//获取继承与父类的功能
            //打印对应对象的名称
            System.out.println(fruit.getName());
        }
    }
}
//测试：上届限定：一定继承Fruit【Pear不继承Fruit】
class Pear{

}
